#ifndef OBJECT_H
#define OBJECT_H

#include "primitive.h"

#include <QSharedPointer>

//This class represents an object in the scene. The object can have many components,
//mainly, a mesh component and a physics component. The mesh component will hold the
//3 dimensional representation of the object. The physics (change name later?) component
//will be responsible for collision and will store a mathematical representation of the object (if available)

class Object
{
public:
    Object();

    void update(glm::vec4 position, float attr1 = 0.0f, float attr2 = 0.0f, float attr3 = 0.0f);

    void set_primitive(Primitive *);
    Primitive* get_primitive();
    Primitive *m_primitive;
    void set_visible(bool);
    void set_wireframe(bool);
    void set_solid(bool);
    bool is_visible();
    bool wireframe();
    bool solid();

    float x_rot;
    float y_rot;
    float z_rot;
    float x_tr;
    float y_tr;
    float z_tr;
    float x_sc;
    float y_sc;
    float z_sc;
private:
    bool m_visible;
    bool m_wireframe;
    bool m_solid;   
};

#endif // OBJECT_H
